package de.sehversuche.pse.model;

import java.util.List;

/**
 * Collection and Tags are sort of fodlers in PSE, so they share a common
 * interface.
 * 
 * @author Lars Heller
 * @version $Id$
 */
public interface PseFolder<T> {
	/**
	 * Answer all children of this folder.
	 * 
	 * @return {@link List} of all children
	 */
	List<PseFolder<T>> getChildren();

	/**
	 * Answer this folder's parent.
	 * 
	 * @return the parent
	 */
	PseFolder<T> getParent();

	/**
	 * Answer all images in this folder or an empty list if none exist.  
	 * 
	 * @return {@link List} of all images
	 */
	List<PseImage> getImages();

	/**
	 * Answer if this folder contains any images.
	 * 
	 * @return {@code true} if this folder contains one or more images, {@code false otherwise}
	 */
	boolean hasImages();
}
